Amazon Linux用 hiredis/cjose/mod_auth_openidc RPMパッケージの作り方
はじめに
こんにちは植木和樹@上越妙高オフィスです。Amazon Linux向けにRPMを作ったので、その作り方をまとめました。
先日ApacheでAuth0認証を行なうための mod_auth_openidc を紹介しました。ただAmazon Linux向けのrpmファイルがなかったので、ソースからビルドしていました。
これだと後々の管理が手間なので、ちゃんとrpmファイルにしておきたいなと思い、十数年ぶりにSPECファイルと格闘しながらRPMを作ってみました。
バージョン
- Amazon Linux 2015.09, 2016.09 それぞれでビルドできることを確認しています。
- hiredis ... 0.13.3
- cjose ... 0.4.1
- mod_auth_openidc ... 2.1.5
SPECファイル
gist にアップしました。SPECファイルを書くのに慣れてないのでおかしな点があればご指摘ください。 mod_auth_openidc RPM spec files for Amazon Linux · GitHub
SPECファイルは下記をベースとしました。cjoseはSPECファイルの修正なしでビルドできました。
- hiredis ... https://searchcode.com/codesearch/raw/18392723/
- cjose ... https://raw.githubusercontent.com/zandbelt/mod-auth-openidc-dist/master/centos/cjose.spec.inc
- mod_auth_openidc ... http://pkgs.fedoraproject.org/cgit/rpms/mod_auth_openidc.git/plain/mod_auth_openidc.spec
ビルド方法
前準備
前回のブログにも書いたビルドに必要なパッケージをインストールしておきます。
$ sudo yum install autoconf automake gcc httpd24 httpd24-devel libcurl-devel openssl-devel pcre-devel -y $ sudo yum install --enablerepo=epel jansson jansson-devel -y
さらに今回はrpmbuildでRPMファイルを作るのでこれらもインストールします。
$ sudo yum install rpm-build check-devel
rpmをビルドするのに必要なディレクトリを作成します。
mkdir -p $HOME/rpm/{BUILD,SRPMS,SPECS,SOURCES,RPMS} echo "%_topdir $HOME/rpm" > ~/.rpmmacros
SPECファイルの準備
gistにアップしたSPECファイルをビルドするAmazon Linuxにダウンロードしておいてください。
$ curl -LO https://gist.github.com/anonymous/6cc8ce58c3472b6bd26ddefc92983c0d/archive/1631b296c15a33b4995147415132d2ebb583336d.zip $ unzip unzip 1631b296c15a33b4995147415132d2ebb583336d.zip.zip $ mv 1631b296c15a33b4995147415132d2ebb583336d/*.spec ~/rpm/SPECS/
hiredis
hiredisのexamplesコンパイル時に要求するヘッダーファイルをインストールします。
$ sudo yum install libevent-devel glib2-devel -y $ sudo yum install libev-devel -y --enablerepo=epel
ソースファイルをダウンロードしてビルドします。
$ curl -Lo ~/rpm/SOURCES/hiredis-v0.13.3.zip https://github.com/redis/hiredis/archive/v0.13.3.zip $ rpmbuild -bb ~/rpm/SPECS/hiredis.spec
rpmファイルができたらインストールします。
$ sudo rpm -ivh rpm/RPMS/x86_64/hiredis-*
cjose
ソースファイルをダウンロードしてビルドします。バージョンに <strong>0.4.1</strong> を指定してビルドしてください。
$ curl -Lo $HOME/rpm/SOURCES/cjose-0.4.1.tar.gz https://github.com/pingidentity/mod_auth_openidc/releases/download/v2.1.3/cjose-0.4.1.tar.gz $ rpmbuild -bb $HOME/rpm/SPECS/cjose.spec --define 'release 0.4.1'
rpmファイルができたらインストールします。
$ sudo rpm -ivh rpm/RPMS/x86_64/cjose-0.4.1-1.amzn1.x86_64.rpm
mod_auth_openidc
ソースファイルをダウンロードしてビルドします。<strong>_with-hiredis</strong>のフラグをたててhiredis付きでコンパイルします。
$ curl -Lo $HOME/rpm/SOURCES/mod_auth_openidc-2.1.5.tar.gz https://github.com/pingidentity/mod_auth_openidc/archive/v2.1.5.tar.gz $ rpmbuild -bb $HOME/rpm/SPECS/mod_auth_openidc.spec --define '_with-hiredis 1'
rpmファイルができたらインストールします。
$ sudo rpm -ivh rpm/RPMS/x86_64/mod_auth_openidc-2.1.5-2.amzn1.x86_64.rpm
なお mod_auth_openidc では下記のファイルがインストールされます。
$ rpm -qpl rpm/RPMS/x86_64/mod_auth_openidc-2.1.5-2.amzn1.x86_64.rpm /etc/httpd/conf.d/auth_openidc.conf /etc/httpd/conf.modules.d/10-auth_openidc.conf /usr/lib64/httpd/modules/mod_auth_openidc.so /usr/share/doc/mod_auth_openidc-2.1.5 /usr/share/doc/mod_auth_openidc-2.1.5/AUTHORS /usr/share/doc/mod_auth_openidc-2.1.5/ChangeLog /usr/share/doc/mod_auth_openidc-2.1.5/DISCLAIMER /usr/share/doc/mod_auth_openidc-2.1.5/README.md /usr/share/licenses/mod_auth_openidc-2.1.5 /usr/share/licenses/mod_auth_openidc-2.1.5/LICENSE.txt /var/cache/httpd/mod_auth_openidc /var/cache/httpd/mod_auth_openidc/cache /var/cache/httpd/mod_auth_openidc/metadata
まとめ
今回はRPMの作成方法についての備忘録でした。
Amazon LinuxのリポジトリにはCentOS/Ubuntuほどたくさんのパッケージは揃っていません。しかし野良ビルドすると、あとあと環境変更をする時に大変になります。またrpmを作っておけば複数台のサーバーにインストールする時にも簡単に展開できて便利です。
一手間かけてもrpmを作って管理するようにしたいですね。